Software containers, such as virtual machines and Linux containers (e.g. Docker containers), allow applications to be “sandboxed” on a computer system. This sandboxing allows an application and its data to be separated from other applications. Furthermore, containers allow further separation between an application, a physical computing system, and operating system thereon. Essentially, a container virtualizes the interface between the application and the computing system on which it is executing. Under such an arrangement, the container can regulate any interaction between the application and the computing system or its operating system.
Overview
Embodiments disclosed herein provide systems, methods, and computer readable media for container based application reification. In a particular embodiment, an application reification system is provided including one or more computer readable storage media and a processing system operatively coupled with the one or more computer readable storage media. The application reification system further includes program instructions stored on the one or more computer readable storage media that, when read and executed by the processing system, direct the processing system to preserve a version of application data at a first time and a configuration of an application at the first time. At a second time subsequent to the first time, the program instructions direct the processing system to create a template for a container containing the application in the configuration and a pointer to the version of the application data in a secondary storage repository.
In some embodiments, the application executes in the container on a host system and operates on the version of the application data.
In some embodiments, the program instructions further direct the processing system to transfer the template to the host system on which the application executes in the container.
In some embodiments, the host system provides an amount of computing resources equal to or scaled from a production environment for the application at the first time.
In some embodiments, to direct the processing system to preserve the version of the application data at a first time, the program instructions direct the processing system to identify items of the application data in a primary storage repository that have changed since a previous version was created and create the version of the application data in the secondary storage repository.
In some embodiments, to direct the processing system to preserve the configuration of the application at the first time, the program instructions direct the processing system to store the configuration in the secondary storage repository with the version of the application data.
In some embodiments, the configuration includes parameters of the application to replicate processing results of the application that would have occurred at the first time.
In some embodiments, the program instructions further direct the processing system to perform data integrity checks on the version of the application data.
In another embodiment, a method of application reification provides preserving a version of application data at a first time and a configuration of an application at the first time. At a second time subsequent to the first time, the method provides creating a template for a container containing the application in the configuration and a pointer to the version of the application data in a secondary storage repository.
In yet another embodiment, a host system is provided including one or more computer readable storage media and a processing system operatively coupled with the one or more computer readable storage media. The host system further includes program instructions stored on the one or more computer readable storage media that, when read and executed by the processing system, direct the processing system to receive an instruction from a user to reify an application in a configuration at a first time and a version of application data for the application preserved at a first time. The program instructions further direct the processing system to request, from an application reification system, a template for a container containing the application in the configuration and a pointer to the version of the application data in a secondary storage repository. Also, the program instructions direct the processing system to receive the template from the application reification system.